package com.dwy2002.room.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dwy2002.common.Result;
import com.dwy2002.pojo.dto.rooms.ReserveRoomDTO;
import com.dwy2002.pojo.dto.rooms.RoomsDTO;
import com.dwy2002.pojo.dto.rooms.RoomsPageDTO;
import com.dwy2002.pojo.po.rooms.Rooms;
import com.dwy2002.pojo.vo.rooms.RoomsVO;

import java.util.List;

/**
 * @author 杜伟毅
 * @version 1.0
 * @since 2025/01/25
 */
public interface IRoomsService extends IService<Rooms> {

    /**
     * 查询包间的分页信息
     * <p>
     * 查询：可按包间名称搜索
     * <p>
     * 排序：可按包间创建时间、包间修改时间、包间费用进行升序和降序排序，
     * <p>
     * 分类：可按包间状态进行分类。
     *
     * @param roomsPageData 包间类的分页数据类
     * @author 杜伟毅
     * @since 2025/1/25 0025 23:29
     */
    Result<Page<Rooms>> getRoomsPage(RoomsPageDTO roomsPageData);

    /**
     * 创建包间
     *
     * @param rooms 前端数据
     * @author 杜伟毅
     * @since 2025/1/25 0025 23:35
     */
    Result<Void> insertRooms(RoomsDTO rooms);

    /**
     * 批量删除包间
     *
     * @param ids 包间id
     * @author 杜伟毅
     * @since 2025/2/8 0008 0:34
     */
    Result<Void> deleteListRooms(List<String> ids);

    /**
     * 修改包间
     *
     * @param rooms 前端数据
     * @author 杜伟毅
     * @since 2025/1/25 0025 23:42
     */
    Result<Void> updateRooms(RoomsDTO rooms);

    /**
     * 获取包间详情
     *
     * @param id 包间id
     * @author 杜伟毅
     * @since 2025/2/11 0011 22:50
     */
    Result<RoomsVO> getRoomDetail(String id);

    /**
     * 预约包间
     *
     * @param reserveRoom 预约包间信息
     * @author 杜伟毅
     * @since 2025/2/12 0012 15:33
     */
    Result<Void> reserveRoom(ReserveRoomDTO reserveRoom);

    /**
     * 取消预约包间
     *
     * @param reserveRoom 预约包间信息
     * @author 杜伟毅
     * @since 2025/2/12 0012 15:33
     */
    Result<Void> cancelRoomReserve(ReserveRoomDTO reserveRoom);
}
